﻿
'-------------------------------------------------------------------------------------------------------
'Mục đích: Lớp User nhằm xử lý tất cả các nghiệp vụ liên quan đến người dùng
'Người tạo: CuongDV
'Ngày tạo :09/03/2005
'-------------------------------------------------------------------------------------------------------
Imports System.Data.SqlClient
Imports lablinkhelper

Public Class clsUser
    Dim mv_sSql As String

    Public Sub New()
        Try
            If Not gv_ConnectSuccess Then
                gv_ConnectSuccess = InitializeConnection()
            End If
        Catch ex As Exception

        End Try
    End Sub
    '------------------------------------------------------------------------------------------------------------
    'Mục đích        : Thêm mới người dùng
    'Đầu vào          :Thông tin người dùng
    'Đầu ra            :Thành công=True. Ngược lại=False
    'Người tạo       :CuongDV
    'Ngày tạo         :09/03/2005
    'Nhật kí sửa đổi:
    '------------------------------------------------------------------------------------------------------------
    Public Function InsertUser(ByVal pv_sBranchID As String, ByVal pv_sUID As String, ByVal pv_sFullName As String, ByVal pv_spwd As String, _
                                            ByVal pv_intSecurityLevel As Integer, ByVal pv_sDepart As String, ByVal pv_sDesc As String, Optional ByVal pv_bAdmin As Boolean = False) As Boolean
        Dim sv_oCmd As SqlCommand
        If pv_bAdmin Then
            If bIsExistedAmin(pv_sUID) Then
                Return False
            End If
        Else
            If bIsExisted(pv_sUID, pv_sBranchID) Then
                Return False
            End If
        End If
        If pv_bAdmin Then
            mv_sSql = "INSERT INTO TBL_ADMINISTRATOR (PK_sAdminID,FP_sBranchID,PK_sCreator,sPWD,iMonth,iYear) VALUES(N'" & _
                        pv_sUID & "',N'" & pv_sBranchID & "',N'Administrator',N'" & pv_spwd & "',10,2006)"
        Else
            mv_sSql = "INSERT INTO TBL_USERS(PK_sUID,FP_sBranchID,sPWD,sFullName,sDepart,iSecurityLevel,sDesc) VALUES(N'" & _
                        pv_sUID & "',N'" & pv_sBranchID & "',N'" & pv_spwd & "',N'" & pv_sFullName & "',N'" & pv_sDepart & "'," & pv_intSecurityLevel & ",N'" & pv_sDesc & "')"
        End If
        Try
            sv_oCmd = New SqlCommand(mv_sSql, gv_oSqlCnn)
            sv_oCmd.ExecuteNonQuery()
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function
    '------------------------------------------------------------------------------------------------------------
    'Mục đích        : Cập nhật thông tin người dùng
    'Đầu vào          :Thông tin
    'Đầu ra            :Thành công=True. Ngược lại=False
    'Người tạo       :CuongDV
    'Ngày tạo         :09/03/2005
    'Nhật kí sửa đổi:
    '------------------------------------------------------------------------------------------------------------
    Public Function UpdateUser(ByVal pv_sBranchID As String, ByVal pv_sUID As String, ByVal pv_sFullName As String, _
                                             ByVal pv_sDepart As String, ByVal pv_sDesc As String) As Boolean
        Dim sv_oCmd As SqlCommand
        mv_sSql = "UPDATE TBL_USERS SET sFullName=N'" & pv_sFullName & "',sDepart=N'" & pv_sDepart & _
                         "',sDesc=N'" & pv_sDesc & "' WHERE PK_sUID=N'" & pv_sUID & "'" & " AND FP_sBranchID=N'" & pv_sBranchID & "'"
        Try
            sv_oCmd = New SqlCommand(mv_sSql, gv_oSqlCnn)
            sv_oCmd.ExecuteNonQuery()
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function
    '------------------------------------------------------------------------------------------------------------
    'Mục đích        : Xóa người dùng
    'Đầu vào          :Thông tin
    'Đầu ra            :Thành công=True. Ngược lại=False
    'Người tạo       :CuongDV
    'Ngày tạo         :09/03/2005
    'Nhật kí sửa đổi:
    '------------------------------------------------------------------------------------------------------------
    Public Function bDeleteUser(ByVal pv_sUID As String) As Boolean
        Dim sv_oCmd As SqlCommand
        mv_sSql = "DELETE FROM  TBL_USERS  WHERE PK_sUID=N'" & pv_sUID & "'" & " AND FP_sBranchID=N'" & gv_sBranchID & "'"
        Try
            sv_oCmd = New SqlCommand(mv_sSql, gv_oSqlCnn)
            sv_oCmd.ExecuteNonQuery()
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function
    '------------------------------------------------------------------------------------------------------------
    'Mục đích        :  Lấy thông tin người dùng
    'Đầu vào          :Mã người dùng
    'Đầu ra            :Thông tin người dùng
    'Người tạo       :CuongDV
    'Ngày tạo         :09/03/2005
    'Nhật kí sửa đổi:
    '------------------------------------------------------------------------------------------------------------
    Public Function dsGetUserInfor(ByVal pv_sUID As String) As DataSet
        Dim sv_DS As New DataSet
        Dim sv_DA As SqlDataAdapter
        mv_sSql = "SELECT * FROM  TBL_USERS  WHERE PK_sUID=N'" & pv_sUID & "'" & " AND FP_sBranchID=N'" & gv_sBranchID & "'"
        Try
            sv_DA = New SqlDataAdapter(mv_sSql, gv_oSqlCnn)
            sv_DA.Fill(sv_DS, "TBL_USERS")
            Return sv_DS
        Catch ex As Exception
            Return Nothing
        End Try
    End Function
    '------------------------------------------------------------------------------------------------------------
    'Mục đích        : Thay đổi mật khẩu người dùng
    'Đầu vào          :Mã người dùng, mật khẩu mới
    'Đầu ra            :Thành công=True. Ngược lại=False
    'Người tạo       :CuongDV
    'Ngày tạo         :09/03/2005
    'Nhật kí sửa đổi:
    '------------------------------------------------------------------------------------------------------------
    Public Function bChangePassword(ByVal pv_sUID As String, ByVal pv_sNewPWD As String) As Boolean
        Dim sv_oCmd As SqlCommand
        Dim sv_oEncrypt As New Encrypt(gv_sSymmetricAlgorithmName)
        mv_sSql = "UPDATE TBL_USERS SET sPWD=N'" & sv_oEncrypt.Mahoa(pv_sNewPWD) & "' WHERE PK_sUID=N'" & pv_sUID & "'" & " AND FP_sBranchID=N'" & gv_sBranchID & "'"
        Try
            sv_oCmd = New SqlCommand(mv_sSql, gv_oSqlCnn)
            sv_oCmd.ExecuteNonQuery()
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function
    '------------------------------------------------------------------------------------------------------------
    'Mục đích        : Thay đổi mật khẩu người dùng
    'Đầu vào          :Mã người dùng, mật khẩu mới
    'Đầu ra            :Thành công=True. Ngược lại=False
    'Người tạo       :CuongDV
    'Ngày tạo         :09/03/2005
    'Nhật kí sửa đổi:
    '------------------------------------------------------------------------------------------------------------
    Public Function bChangePasswordForAdmin(ByVal pv_sUID As String, ByVal pv_sNewPWD As String) As Boolean
        Dim sv_oCmd As SqlCommand
        Dim sv_oEncrypt As New Encrypt(gv_sSymmetricAlgorithmName)
        mv_sSql = "UPDATE TBL_ADMINISTRATOR SET sPWD=N'" & pv_sNewPWD & "' WHERE PK_sAdminID=N'" & pv_sUID & "'" & " AND FP_sBranchID=N'" & gv_sBranchID & "'"
        Try
            sv_oCmd = New SqlCommand(mv_sSql, gv_oSqlCnn)
            sv_oCmd.ExecuteNonQuery()
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function
    '------------------------------------------------------------------------------------------------------------
    'Mục đích        : Xóa mật khẩu của tất cả người dùng
    'Đầu vào          :Mật khẩu mới
    'Đầu ra            :Thành công=True. Ngược lại=False
    'Người tạo       :CuongDV
    'Ngày tạo         :09/03/2005
    'Nhật kí sửa đổi:
    '------------------------------------------------------------------------------------------------------------
    Public Function bClearAllPassword(ByVal pv_sNewPWD As String) As Boolean
        Dim sv_oCmd As SqlCommand
        Dim sv_oEncrypt As New Encrypt(gv_sSymmetricAlgorithmName)
        mv_sSql = "UPDATE TBL_USERS SET sPWD=N'" & sv_oEncrypt.Mahoa(pv_sNewPWD) & "'" & " WHERE FP_sBranchID=N'" & gv_sBranchID & "'"
        Try
            sv_oCmd = New SqlCommand(mv_sSql, gv_oSqlCnn)
            sv_oCmd.ExecuteNonQuery()
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function
    '------------------------------------------------------------------------------------------------------------
    'Mục đích        : Kiểm tra xem Account mà người dùng nhập vào có tồn tại trong CSDL hay không?
    'Đầu vào          :UserName, Password
    'Đầu ra            :Thành công=True. Ngược lại=False
    'Người tạo       :CuongDV
    'Ngày tạo         :09/03/2005
    'Nhật kí sửa đổi:
    '------------------------------------------------------------------------------------------------------------
    Public Function bLoginSuccess(ByVal pv_sUID As Integer, ByVal pv_sPWD As String) As Boolean
        Dim sv_oDS As New DataSet
        Dim sv_oDA As SqlDataAdapter
        mv_sSql = "SELECT *  FROM TBL_USERS  WHERE PK_sUID=N'" & pv_sUID & "' AND sPWD=N'" & pv_sPWD & "'" & " AND FP_sBranchID=N'" & gv_sBranchID & "'"
        Try
            sv_oDA = New SqlDataAdapter(mv_sSql, gv_oSqlCnn)
            sv_oDA.Fill(sv_oDS, "TBL_USERS")
            If sv_oDS.Tables(0).Rows.Count > 0 Then
                Return True
            Else
                Return False
            End If
        Catch ex As Exception
            Return False
        End Try
    End Function
    '------------------------------------------------------------------------------------------------------------
    'Mục đích        : Lấy về tất cả các User trong CSDL
    'Đầu vào          :
    'Đầu ra            :Danh sách Users
    'Người tạo       :CuongDV
    'Ngày tạo         :09/03/2005
    'Nhật kí sửa đổi:
    '------------------------------------------------------------------------------------------------------------
    Public Function dsGetAllUser() As DataSet
        Dim sv_oDS As New DataSet
        Dim sv_oDA As SqlDataAdapter
        Try
            mv_sSql = "SELECT * from TBL_USERS WHERE FP_sBranchID=N'" & gv_sBranchID & "' order by PK_sUID ASC"
            sv_oDA = New SqlDataAdapter(mv_sSql, gv_oSqlCnn)
            sv_oDA.Fill(sv_oDS, "TBL_USERS")
            Return sv_oDS
        Catch ex As Exception
        End Try
    End Function
    '------------------------------------------------------------------------------------------------------------
    'Mục đích        : Kiểm tra sự tồn tại của một UserName trong CSDL
    'Đầu vào          :UserName
    'Đầu ra            :Tồn tại=True. Ngược lại=False
    'Người tạo       :CuongDV
    'Ngày tạo         :09/03/2005
    'Nhật kí sửa đổi:
    '------------------------------------------------------------------------------------------------------------
    Public Function bIsExisted(ByVal pv_sUID As String, ByVal pv_sBranchID As String) As Boolean
        Dim sv_oDS As New DataSet
        Dim sv_oDA As SqlDataAdapter
        Try
            mv_sSql = "SELECT * from TBL_USERS WHERE PK_sUID =N'" & pv_sUID & "'" & " AND FP_sBranchID=N'" & pv_sBranchID & "'"
            sv_oDA = New SqlDataAdapter(mv_sSql, gv_oSqlCnn)
            sv_oDA.Fill(sv_oDS, "TBL_USERS")
            If sv_oDS.Tables(0).Rows.Count > 0 Then
                Return True
            Else
                Return False
            End If
        Catch ex As Exception
            Return False
        End Try
    End Function
    '------------------------------------------------------------------------------------------------------------
    'Mục đích        : Kiểm tra sự tồn tại của một Admin trong CSDL
    'Đầu vào          :UserName của Admin
    'Đầu ra            :Tồn tại=True. Ngược lại=False
    'Người tạo       :CuongDV
    'Ngày tạo         :09/03/2005
    'Nhật kí sửa đổi:
    '------------------------------------------------------------------------------------------------------------
    Public Function bIsExistedAmin(ByVal pv_sUID As String) As Boolean
        Dim sv_oDS As New DataSet
        Dim sv_oDA As SqlDataAdapter
        Try
            mv_sSql = "SELECT * from tbl_Administrator WHERE PK_sAdminID =N'" & pv_sUID & "'" & " AND FP_sBranchID=N'" & gv_sBranchID & "'"
            sv_oDA = New SqlDataAdapter(mv_sSql, gv_oSqlCnn)
            sv_oDA.Fill(sv_oDS, "tbl_Administrator")
            If sv_oDS.Tables(0).Rows.Count > 0 Then
                Return True
            Else
                Return False
            End If
        Catch ex As Exception
            Return False
        End Try
    End Function
    '------------------------------------------------------------------------------------------------------------
    'Mục đích        : Thiết lập mức phân quyền cho User(Tất cả các quyền=1. Theo quyền chọn trên cây:=0)
    'Đầu vào          :UserName, Mức phân quyền
    'Đầu ra            :
    'Người tạo       :CuongDV
    'Ngày tạo         :09/03/2005
    'Nhật kí sửa đổi:
    '------------------------------------------------------------------------------------------------------------
    Public Sub UpdateSecurity(ByVal pv_sUID As String, ByVal pv_iSecurityLevel As Byte)
        Dim sv_oCmd As SqlCommand
        Try
            mv_sSql = "UPDATE tbl_USers set iSecurityLevel =" & pv_iSecurityLevel & " WHERE upper(PK_sUID) =N'" & pv_sUID & "'" & " AND FP_sBranchID=N'" & gv_sBranchID & "'"
            sv_oCmd = New SqlCommand(mv_sSql, gv_oSqlCnn)
            sv_oCmd.ExecuteNonQuery()
        Catch ex As Exception
        End Try
    End Sub
    '------------------------------------------------------------------------------------------------------------
    'Mục đích        : Lấy về mức phân quyền của User
    'Đầu vào          :UserName
    'Đầu ra            :Mức phân quyền
    'Người tạo       :CuongDV
    'Ngày tạo         :09/03/2005
    'Nhật kí sửa đổi:
    '------------------------------------------------------------------------------------------------------------
    Public Function iGetSecurityLevel(ByVal pv_sUID As String) As Integer
        Dim sv_oDS As New DataSet
        Dim sv_oDA As SqlDataAdapter
        mv_sSql = "SELECT iSecurityLevel FROM tbl_Users  WHERE upper(PK_sUID)=N'" & pv_sUID & "'  AND FP_sBranchID=N'" & gv_sBranchID & "'"
        Try
            sv_oDA = New SqlDataAdapter(mv_sSql, gv_oSqlCnn)
            sv_oDA.Fill(sv_oDS, "tbl_Users")
            If sv_oDS.Tables(0).Rows.Count > 0 Then
                Return sv_oDS.Tables(0).Rows(0)("iSecurityLevel")
            Else
                Return 0
            End If
        Catch ex As Exception
            Return 0
        End Try
    End Function
    '------------------------------------------------------------------------------------------------------------
    'Mục đích        : Kiểm tra sự tồn tại của một Account Admin trong CSDL
    'Đầu vào          :UserName của Admin, Password
    'Đầu ra            :Thành công=True. Ngược lại=False
    'Người tạo       :CuongDV
    'Ngày tạo         :09/03/2005
    'Nhật kí sửa đổi:
    '------------------------------------------------------------------------------------------------------------
    Public Function bLoginSuccessAdmin(ByVal pv_sUID As String, ByVal pv_sPWD As String) As Boolean
        Dim sv_oDS As New DataSet
        Dim sv_oDA As SqlDataAdapter
        mv_sSql = "SELECT * FROM tbl_Administrator  WHERE PK_sAdminID=N'" & pv_sUID & "' AND sPWD=N'" & pv_sPWD & "'" & " AND FP_sBranchID=N'" & gv_sBranchID & "'"
        Try
            sv_oDA = New SqlDataAdapter(mv_sSql, gv_oSqlCnn)
            sv_oDA.Fill(sv_oDS, "tbl_Administrator")
            If sv_oDS.Tables(0).Rows.Count > 0 Then
                Return True
            Else
                Return False
            End If
        Catch ex As Exception
            Return False
        End Try
    End Function
End Class
